using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("HistoryInfo")]
	public class HistoryInfo : MonoClass
	{
		public HistoryInfoType m_infoType => method_2<HistoryInfoType>("m_infoType");

		public int m_damageChangeAmount => method_2<int>("m_damageChangeAmount");

		public int m_armorChangeAmount => method_2<int>("m_armorChangeAmount");

		public int m_maxHealthChangeAmount => method_2<int>("m_maxHealthChangeAmount");

		public bool m_dontDuplicateUntilEnd => method_2<bool>("m_dontDuplicateUntilEnd");

		public Entity m_originalEntity => method_3<Entity>("m_originalEntity");

		public Entity m_duplicatedEntity => method_3<Entity>("m_duplicatedEntity");

		public bool m_died => method_2<bool>("m_died");

		public HistoryInfo(IntPtr address, string className)
			: base(address, className)
		{
		}

		public HistoryInfo(IntPtr address)
			: this(address, "HistoryInfo")
		{
		}

		public int GetSplatAmount()
		{
			return method_11<int>("GetSplatAmount", Array.Empty<object>());
		}

		public int GetCurrentVitality()
		{
			return method_11<int>("GetCurrentVitality", Array.Empty<object>());
		}

		public Entity GetDuplicatedEntity()
		{
			return method_14<Entity>("GetDuplicatedEntity", Array.Empty<object>());
		}

		public Entity GetOriginalEntity()
		{
			return method_14<Entity>("GetOriginalEntity", Array.Empty<object>());
		}

		public void SetOriginalEntity(Entity entity)
		{
			method_8("SetOriginalEntity", entity);
		}

		public bool HasDied()
		{
			return method_11<bool>("HasDied", Array.Empty<object>());
		}

		public void SetDied(bool set)
		{
			method_8("SetDied", set);
		}

		public bool CanDuplicateEntity(bool duplicateHiddenNonSecret, bool isEndOfHistory)
		{
			return method_11<bool>("CanDuplicateEntity", new object[2] { duplicateHiddenNonSecret, isEndOfHistory });
		}

		public void DuplicateEntity(bool duplicateHiddenNonSecret, bool isEndOfHistory)
		{
			method_8("DuplicateEntity", duplicateHiddenNonSecret, isEndOfHistory);
		}
	}
}
